#ifndef ARBOL_H
#define ARBOL_H

#include "NodoArbol.h"
#include<QString>
#include "virtual.h"

template <typename T>
class Arbol
{
    public:
        Arbol();
        Arbol(NodoArbol<T>* raiz);
        //~Arbol();

        QString Inorden();
        QString Posorden();
        QString Preorden();

        static QString Inorden(NodoArbol<T>* raiz);
        static QString Preorden(NodoArbol<T>* raiz);
        static QString Posorden(NodoArbol<T>* raiz);

        NodoArbol<T>* getRaiz();
        void setRaiz(NodoArbol<T> *raiz);

        bool Vacio();
        bool Vacio(NodoArbol<T> *raiz);
        bool Valido(int clave);
        T Index(int clave);
        static bool Valido(int clave, NodoArbol<T> *raiz);
        static T Index(int clave, NodoArbol<T>* raiz);

    protected:


        NodoArbol<T>* Raiz;

        void Deleter(NodoArbol<T>* raiz);
};

    #endif // ARBOL_H
